package cn.bearspark.like.provider.service;

import java.util.List;
import java.util.Set;

/**
 * 点赞动态服务的服务接口
 *
 * @author f
 */
public interface HappeningLikeService {

    /**
     * 保存/移除动态的点赞记录
     *
     * @param userId      操作的用户 id
     * @param happeningId 被操作的动态 id
     * @param liked       点赞的枚举值
     * @return 操作影响的行数
     */
    int likeHappening(long userId, long happeningId, int liked);

    /**
     * 分页查询指定动态点赞用户 id 集合
     *
     * @param pageNum     页数
     * @param pageSize    每页的条数
     * @param happeningId 指定动态的 id
     * @return 指定动态点赞用户 id 集合的分页查询对象
     */
    List<Long> pageHappeningLikedUserId(int pageNum, int pageSize, long happeningId);

    /**
     * 获取指定动态 id 集合中指定用户点赞的动态 id Set 集合
     *
     * @param happeningIdList 指定动态的 id 集合
     * @param userId          指定用户的 id
     * @return 指定动态 id 集合中指定用户点赞的动态 id Set 集合
     */
    Set<Long> getLikedHappeningIdSet(List<Long> happeningIdList, long userId);

    /**
     * 查询指定用户是否点赞指定动态
     *
     * @param happeningId 指定动态的 id
     * @param userId      指定用户的 id
     * @return 指定用户是否点赞指定动态
     */
    boolean isHappeningLiked(long happeningId, long userId);

}
